import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


@WebServlet("/bbq")
public class MyServlet extends HttpServlet {
    // 创建映射器,来读取数据
    private ObjectMapper objectMapper = new ObjectMapper();
    // 用一个list,保存数据 ;
    private List<Body> list = new ArrayList<>() ;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          // 请求 里是 json 数据, 使用 jackson 来读取数据 ;
       Body body =   objectMapper.readValue(req.getInputStream() , Body.class) ;
        //在服务器 打印 请求中收到的 数据
        System.out.println("在请求中收到的数据" + body);
         // 目前保存数据,先存在内存里 A ;用一个集合类保存
         list.add(body) ;
         // 返回响应
        resp.setStatus(200);
        // 响应里一般也用 请求一样的格式,这里也用json
        resp.getWriter().write("ok");
//        resp.setContentType("application/json; charset=utf8");
//        resp.getWriter().write("{ ok : true }");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         // 这个方法来处理,获取数据的get请求 ; 没有什么参数,直接返回数据

        //设置好状态 ;
        resp.setStatus(200);
        resp.setContentType("application/json; charset=utf8");
         //将 数据构造成 json , 返回响应
        String respJson = objectMapper.writeValueAsString(list) ;
        resp.getWriter().write(respJson);

    }
}

class Body{      // 创建数据的数据类
    public String A ;  //这里属性的名字,要和前面约定好的数据格式相同
    public String B ;
    public String to ;

    @Override
    public String toString() {
        return "Body{" +
                "A='" + A + '\'' +
                ", B='" + B + '\'' +
                ", to='" + to + '\'' +
                '}';
    }
}
